#pragma once



template<__int8 n>
struct instruction_1
{
	static const __int8 value = n;
};

#define  b_(n)   instruction_1<n>::value 

#define push_ebp	instruction_1<0x55>::value 
#define mov			instruction_1<0x8B>::value 
#define esp			instruction_1<0xEC>::value 
#define sub			instruction_1<0x83>::value 

#define pop_ebp		instruction_1<0x5D>::value 
#define ret			instruction_1<0xC3>::value 
#define i_int		instruction_1<0xCC>::value 
	

class CallBackCode
{
public:
	void * GetFunction();

	CallBackCode& operator[](__int32 a);
	CallBackCode& operator()(__int8 a);

	CallBackCode();
	~CallBackCode();

private:
	class Impl ;
	Impl* pImpl;
};

void CallBackCodeRelease();